草庐IT

AngularJS 控制器

全部标签

javascript - 在不使用 "angular.element.scope"的情况下从 AngularJs 外部更新范围

我希望能够从Angular外部的函数更新Angular中的范围。例如,如果我有一个返回成功回调的jQuery插件,我希望能够从该成功回调更新范围。我见过的每个解决方案都涉及调用angular.element(selector).scope,然后在返回的范围上调用$apply。但是,我也看到很多评论表明这在调试信息关闭时不起作用,因此不推荐这样做,但我还没有看到任何替代解决方案。有谁知道在不使用angular.element(selector).scope的情况下从Angular外部更新范围的方法吗?这是帖子中接受的解决方案:“如果您想从AngularJs的控制之外对范围值进行任何更改,

javascript - AngularJS : Should service's boolean method return promise that resolves to true/false, 或者被解决/拒绝?

promise的使用模式仍然让我感到困惑。例如,在Angular应用程序中,我有一个服务usersService,方法是emailExists(email)。显然,它向服务器请求检查给定的电子邮件是否已经存在。让方法emailExists(email)返回在正常操作中解析为true或false的promise对我来说感觉很自然.如果只是我们有一些意外的错误(比如,服务器返回500:内部服务器错误,那么promise应该被拒绝,但在正常操作中,它被解析为相应的bool值。然而,当我开始实现我的异步验证器指令(通过$asyncValidators)时,我看到它想要解决/拒绝promise。

javascript - 使用 AngularJS 自定义排序功能对电子邮件值进行排序时出现问题

我有一个显示用户电子邮件的列,我为其添加了排序功能。但是结果数组没有正确排序。Samplecodeishere任何帮助将不胜感激示例代码中,[升序]排序输出为abc+1@abc.comabc@abc.combac@abc.com但预期输出是abc@abc.comabc+1@abc.combac@abc.com 最佳答案 提示是使用自定义排序功能并在@符号处“剪切”电子邮件。否则将比较整个字符串,并且@的值高于+。如果您只想匹配用户名,您应该没问题。否则,在比较Usernames之前,您还需要比较域。这是一个JSfiddle:http

javascript - AngularJS 1.4.8 - 选择中的 ngOptions - 当我在 ngOptions 中的选项之前以编程方式设置模型时无限 $digest() 循环

我在从1.2.14迁移到1.4.8时遇到了这个问题。这在1.2.14中工作正常,但我在1.4.8中得到无限的$digest()循环。这是一个Fiddle证明问题。Fiddle比这篇文章更容易看,但它让我包含代码我有一个select看起来像这样的元素:我的选项是对象,像这样:$scope.options=[{id:1,label:'one'},{id:2,label:'two'}];我想为ngOptions指令提供的选项数组取决于条件;有时我只想给它$scope.options,但有时我想包括另一个选项。$scope.getOptions=function(){if($scope.sho

javascript - 用尖括号和方括号显示的 Chrome 控制台对象属性

在Chrome控制台中列出对象的属性时,我偶然发现了以前从未见过的符号。事实上,一些属性被概述为和[[double-square-brackets-properties]]符号。任何人都可以阐明:这些符号的用途这些行为/修饰符的含义是什么属性(可枚举、可写、可配置等)这是否可以通过纯Javascript操作重现,或者是否只能通过nativeC++对象实现何时引入(ECMAScript规范)您将在下面找到一个示例: 最佳答案 您的大部分问题都已得到解答here.就像那个答案一样,我将继续引用规范:Theyaredefinedbythi

javascript - 使用整数为美分的angularjs货币过滤器

正如您可以在互联网上阅读的那样usingfloatstorepresentcurrencyisaverybadidea.推荐的最佳做法是改用代表美分的整数。这样您就不会遇到任何精度问题,尤其是在您进行一些计算时。由于我天真且过于乐观,我选择了-尽管有所有警告-float来表示我应用程序中的货币。一开始进展顺利。现在我遇到了各种问题(尤其是比较问题),想从float切换到整数。不幸的是,angular不支持美分整数作为货币过滤器的输入(至少据我所知)。我有点惊讶,到目前为止似乎还没有人提出这个问题(github上没有相应的问题,SO上也没有,等等)。有什么最佳实践吗?您能想到像这样的简单

javascript - 无法读取未定义的属性 'toLowerCase' (Angularjs/JavaScript/Json)

我正在构建Angular/Express应用程序,我使用Controller加载数据并尝试在函数中处理数据,但我在控制台中遇到错误Cannotreadproperty'toLowerCase'ofundefined当我手动写入JSON数据时,它工作得很好。任何人都遇到过这个错误,为什么会发生?编辑:我还希望函数在点击时起作用,当我不希望它加载时,我还使用View中的listData数据,所以我知道它已加载Controllervarself=this;self.listData=[];varself=this;self.listData=[];$http.get('/myList').s

javascript - Accessibility: d3 brush/zoom 可以获得焦点并用键盘控制

关于如何使用键盘控制d3笔刷/缩放的任何提示:1.专注笔刷控制能力2.能够使用键盘改变笔刷区域是否支持开箱即用?更新:显然没有开箱即用的解决方案(希望d3会在某个时候提供)。这意味着自定义解决方案将取决于可视化/场景。发布实际的用户体验和要求,并将针对此特定案例提供解决方案。为了满足可访问性要求,任务是修改下面的图表控件,以便能够使用键盘进行缩放/画笔。这包括:1)能够设置焦点;2)能够使用左右箭头键进行控制。 最佳答案 我要用这个bl.ock作为引用。我相信这是您图像的来源。缩放和画笔功能比较我们对这个block中的一些东西感兴趣

javascript - 在 JavaScript 中,手动控制事件监听器的顺序

假设FORM包含INPUT,有以下监听器:JavaScriptfunctionformFirst(e){...}functionformLast(e){...}functioninputFirst(e){...}functioninputLast(e){...}functionmiddle(e){...}document.getElementById('form').addEventListener('change',formFirst,true);document.getElementById('form').addEventListener('change',formLast,fa

javascript - AngularJS 中的多个独立部分

我一直在研究Angular.js教程,现在我想扩展它。这是一个简单的CRUD应用程序,具有模板列表:list.html(仅在数据库中记录标题和内容)、创建表单:new.html和编辑表单:edit.html。刚才list.html从我的REST应用加载模板数组并将它们显示在表格中。有一个搜索表单和一些排序功能。New.html有一个用于创建新模板的表单。这两个.html文件是通过不同的路径加载的。#/和#/new我现在想要做的是拥有一个文件index.html,它将list.html加载到一个div中,然后将new.html加载到另一个div中。这个想法是记录列表将始终显示在左侧,然后